package model.mwgde;

import model.IManufacturingMethodWithPartProcessesAndTools;
import model.mwgde.MWGDE.Material;

/**
 * This interface is for every process of type 'maching with geometrically
 * defined edges'.
 * @author Oliver Eckstein & Sebastian Perlwitz
 *
 */
public interface IMWGDEInterface extends IManufacturingMethodWithPartProcessesAndTools {
    
	/**
     * To set a material for this manufacturing process.
     * @param mat material constant.
     */
    public void setMaterial(Material mat);
    
    /**
     * To get the material set for this manufacturing method.
     * @return the material set.
     */
    public Material getMaterial();
    
    /**
     * To translate a type of Material to German. Returns {@code} when
     * invalid material was given.
     * @param mat the Material to be translated.
     * @return the translated material type.
     */
    public String materialToString(Material mat);
    
    /**
     * To translate a type of material from German to type of Material. Returns
     * {@code} when invalid material was given.
     * @param mat the Material to be translated.
     * @return the translated material type.
     */
    public Material stringToMaterial(String mat);
    
    /**
     * To get a list of all valid material types of this manufacturing method.
     * @return list of all valid material types.
     */
    public String[] getMaterials();
    
}
